<?php

namespace JsonLowCode\Traits\Events;

/**
 * 设置输入框常规事件
 */
trait HasInputEvents
{
    /**
     * 输入框在用户输入时触发
     * @param string $event 函数字符串 (value: string | [string, string]) => void
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onInput(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onInput",$event,$isJSExpression);
    }

    /**
     * 输入框获得焦点时触发
     * @param string $event 函数字符串 () => void
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onFocus(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onFocus",$event,$isJSExpression);
    }

    /**
     * 输入框失去焦点时触发
     * @param string $event 函数字符串 () => void
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onBlur(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onBlur",$event,$isJSExpression);
    }

    /**
     * 输入框点击清空按钮时触发
     * @param string $event 函数字符串 () => void
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onClear(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onClear",$event,$isJSExpression);
    }

    /**
     * 原生 change 事件触发时触发
     * @param string $event 函数字符串 (value: string | [string, string]) => void
     * @param bool $isJSExpression 是否js表达式
     * @return $this
     */
    public function onChange(string $event = "", bool $isJSExpression = false): static
    {
        return $this->events("onChange",$event,$isJSExpression);
    }
}
